package com.bjesc_b2c.app.appraiset.http;


import java.util.List;

import master_bean.AppUpdateBean;
import master_bean.AppraiserBean;
import master_bean.BasicInfoBean;
import master_bean.BigPhotoBean;
import master_bean.CarBigPhotoStatusBean;
import master_bean.CarForBean;
import master_bean.CarSeriesModelBean;
import master_bean.ComprehensiveBean;
import master_bean.CustomerDetailsBean;
import master_bean.CustomerInfoBean;
import master_bean.DealerBean;
import master_bean.DemandCarBean;
import master_bean.LoginBean;
import master_bean.SelectCarBrandBean;
import master_bean.SinglePhotoUpBean;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.POST;
import rx.Observable;
import rxretrofit_base.model.RxHttpUrl;
import rxretrofit_base.model.TokenBean;

/**
 * Created by lenovo on 2017/2/27.
 */

public interface IApiActivityRequest {
    /**
     * 登录
     * @return
     */
    @POST(RxHttpUrl.UserLogin)
    Observable<TokenBean<LoginBean>> login();
    /**
     * 获取版本号
     * @return
     */
    @POST(RxHttpUrl.AppVersion)
    Observable<TokenBean<AppUpdateBean>> appVersion();
    /**
     * 下载app
     * @return
     */
    @GET(RxHttpUrl.AppUrl)
    Call<ResponseBody> loadFile();
    /**
     * 获取车品牌
     * @return
     */
    @POST(RxHttpUrl.CAR_BRAND)
    Observable<TokenBean<List<SelectCarBrandBean>>> getCarBrand();

    /**
     * VIN码排重
     * @return
     */
    @POST(RxHttpUrl.VIN_REPEAT)
    Observable<TokenBean> sortVIN();

    /**
     * 获取首页基本信息
     */
    @POST(RxHttpUrl.GET_BASIC_INFO)
    Observable<TokenBean<BasicInfoBean>> getBasicInfo();

    /**
     * 获取首页基本信息
     */
    @POST(RxHttpUrl.SAVE_BASIC_INFO)
    Observable<TokenBean> saveBasicInfo();

    /**
     * 通过车品牌获取车系
     * @return
     */
    @POST(RxHttpUrl.CAR_SERIES)
    Observable<TokenBean<List<CarSeriesModelBean>>> getCarSeries();

    /**
     * 通过车系获取车型
     * @return
     */
    @POST(RxHttpUrl.CAR_MODEL)
    Observable<TokenBean<List<CarSeriesModelBean>>> getCarModel();

    /**
     * 保存骨架的图片
     * @return
     */
    @POST(RxHttpUrl.SAVE_FRAME)
    Observable<TokenBean> saveFrame();

    /**
     * 获取骨架详情
     * @return
     */
    @POST(RxHttpUrl.GET_BIG_STATUS)
    Observable<TokenBean<List<CarBigPhotoStatusBean>>> getFrameworkStatus();

    /**
     * 获取骨架、外观等详情图片
     * @return
     */
    @POST(RxHttpUrl.GET_SINGLE_PHOTO)
    Observable<TokenBean<SinglePhotoUpBean>> getSinglePhoto();

    /**
     * 保存外观的图片
     * @return
     */
    @POST(RxHttpUrl.SAVE_SURFACE)
    Observable<TokenBean> saveSurface();

    /**
     * 保存内饰的图片
     * @return
     */
    @POST(RxHttpUrl.SVAE_ORNAMENTS)
    Observable<TokenBean> saveOrnaments();

    /**
     * 保存装置的图片
     * @return
     */
    @POST(RxHttpUrl.SAVE_DEVICE)
    Observable<TokenBean> saveDevice();

    /**
     * 获取综合评估
     * @return
     */
    @POST(RxHttpUrl.GET_COMPREHENSIVE)
    Observable<TokenBean<ComprehensiveBean>> getComprehensive();

    /**
     * 保存综合评估
     * @return
     */
    @POST(RxHttpUrl.SAVE_COMPREHENSIVE)
    Observable<TokenBean> saveComprehensive();

    /**
     * 保存车辆合影
     * @return
     */
    @POST(RxHttpUrl.SAVE_CARPHOTO)
    Observable<TokenBean<SinglePhotoUpBean>> saveCarPhoto();

    /**
     * 删除图片
     * @return
     */
    @POST(RxHttpUrl.DELETE_FILE)
    Observable<TokenBean> deleteFile();

    /**
     * 获取大图里描述信息
     * @return
     */
    @POST(RxHttpUrl.GET_BIGPHOTO)
    Observable<TokenBean<BigPhotoBean>> getBigPhoto();

    /**
     * 提交信息
     * @return
     */
    @POST(RxHttpUrl.COMMIT_INFO)
    Observable<TokenBean<SinglePhotoUpBean>> commitInfo();

    /**
     * 新增车源
     * @return
     */
    @POST(RxHttpUrl.ADD_CAR)
    Observable<TokenBean<BasicInfoBean>> addCar();

/**
 * 新增车商
 * @return
 */
    @POST(RxHttpUrl.ADD_DEALER)
    Observable<TokenBean<DealerBean>> addDealer();

    /**
     * 获取车商
     * @return
     */
    @POST(RxHttpUrl.GET_DEALER)
    Observable<TokenBean<List<CarForBean>>> getDealer();
    /**
     * B2C 提交信息
     * @return
     */
    @POST(RxHttpUrl.EXAMINE_CAR)
    Observable<TokenBean<CarForBean>>putCar();
    /**
     * B2C 下架
     * @return
     */
    @POST(RxHttpUrl.OFF_CAR)
    Observable<TokenBean<CarSeriesModelBean>>offCar();

    /**
     * 调价
     * @return
     */
    @POST(RxHttpUrl.EDIT_CAR_PRICE)
    Observable<TokenBean<CarSeriesModelBean>>editPrice();

    /**
     * 获取车市
     * @return
     */
    @POST(RxHttpUrl.CAR_MARKET)
    Observable<TokenBean<List<CarForBean>>> getMarket();
    /**
     * 获取客户基本信息
     * @return
     */
    @POST(RxHttpUrl.TOURISTS_INFO)
    Observable<TokenBean<CustomerInfoBean>> getCusinfo();

    /**
     * 修改客户基本信息
     * @return
     */
    @POST(RxHttpUrl.TOURISTS_INFO)
    Observable<TokenBean> modifyCusinfo();
    /**
     * 获取需求车源、相似车源
     * @return
     */
    @POST(RxHttpUrl.DEMAND_CAR)
    Observable<TokenBean<List<DemandCarBean>>> getDemandCars();

    /**
     * 获取客户详细信息接口
     * @return
     */
    @POST(RxHttpUrl.TOURISTS_DETAIL)
    Observable<TokenBean<CustomerDetailsBean>>getCusDetails();
    /**
     * 获取相似车源
     * @return
     */
    @POST(RxHttpUrl.LIKE_DEALERS)
    Observable<TokenBean<List<DemandCarBean>>>getLikeCars();
    /**
     * 添加需求车源
     * @return
     */
    @POST(RxHttpUrl.ADD_DEMANDCAR)
    Observable<TokenBean>addDemandCar();
    /**
     * 添加需求车源
     * @return
     */
    @POST(RxHttpUrl.ADD_FOLLOW)
    Observable<TokenBean>addFollow();

    /** 获取评估师列表
     * @return
     */
    @POST(RxHttpUrl.GET_ALL_APPRAISER)
    Observable<TokenBean<List<AppraiserBean>>>getAllAppraiser();
    /** 转单
     * @return
     */
    @POST(RxHttpUrl.MOVE_ORDERSTRACK)
    Observable<TokenBean>moveOrdersTrack();
    /** 转单
     * @return
     */
    @POST(RxHttpUrl.NEXT_FOLLOWTIME)
    Observable<TokenBean>addNextTime();
    /** 修改订单操作
     * @return
     */
    @POST(RxHttpUrl.SHUT_DOWN_DISPATCH)
    Observable<TokenBean>shutDownDispatch();


    //测试
    @POST("api/test")
    Observable<TokenBean> saveBasic();
}
